package com.wuage.application;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.wuage.domain.model.UacAccount;
import com.wuage.domain.model.UacRole;
import com.wuage.domain.model.UacTenant;
import com.wuage.interfaces.BaseDO;
import com.wuage.interfaces.role.domian.UacRoleDO;
import com.wuage.interfaces.role.domian.UacRolePageDO;
import com.wuage.interfaces.role.domian.UacRoleUpdateDO;

/**
 * (UacRole)表服务接口
 *
 * @Author: makejava
 * @Date: 2021-09-27 17:00:43
 */
public interface IUacRoleService extends IService<UacRole> {

    /**
     * 创建管理员角色，并且绑定账号
     *
     * @param uacTenant 租户
     * @return 角色
     */
    UacRole createAdmin(UacTenant uacTenant);

    /**
     * 根据角色code和租户id查询角色
     *
     * @param role     角色code
     * @param tenantId 租户id
     * @return 角色信息
     */
    UacRole getByRoleAndTenant(String role, Long tenantId);

    /**
     * 根据租户Id分页查询该租户下所有角色
     *
     * @param tenantId 组合Id
     * @return 角色信息
     */
    Page<UacRole> getRoles(UacRolePageDO pageDO, Long tenantId);

    /**
     * 添加角色
     *
     * @param uacRoleDO 角色信息
     * @return 添加结果
     */
    Boolean addRole(UacRoleDO uacRoleDO);

    /**
     * 更新橘角色信息
     *
     * @param uacRoleUpdateDO 角色信息
     * @return 更新结果
     */
    Boolean updateRole(UacRoleUpdateDO uacRoleUpdateDO);

    /**
     * @param id
     * @return
     */
    Boolean deleteRole(Long id);
}